package com.lvan.rabbit.producer.mode1_straight;

import com.lvan.rabbit.utils.RabbitMQUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

import java.io.IOException;

/**
 * 直连方式，
 * 生产者直接将消息发送到队列中；
 * 消费者直接从队列中消费消息；
 *
 * @author Lvan
 */
public class Straight1 {

    public static void main(String[] args) throws IOException {
        // 获取连接对象
        Connection connection = RabbitMQUtil.getConnection();

        if (connection != null) {
            // 获取连接中通道
            Channel channel = connection.createChannel();
            // 通道绑定对于消息队列
            // 参数1: 队列名称，如果队列不存在则自动创建
            // 参数2：用来定义队列是否持久化，数据是否写入磁盘
            // 参数3：是否使用当前连接独占队列
            // 参数4：是否在消息完成后自动删除队列
            // 参数5：额外附加参数
            channel.queueDeclare("TMSG", false, false, false, null);

            // 发布消息
            // 参数1：交换机名称
            // 参数2：队列名称
            // 参数3：传递消息额外设置 例如：MeesageProperties.PEREIETENT_TEXT_PLAIN //消息持久化
            // 参数4：消息的具体内容
            channel.basicPublish("", "TMSG", null, "helloworld, rabbitMQ".getBytes());

            // 关闭channel及连接
            RabbitMQUtil.closeConnectionAndChanel(channel, connection);
        }
    }
}
